package com.solming.leetcode.question;

//875. 爱吃香蕉的珂珂
//珂珂喜欢吃香蕉。这里有 N 堆香蕉，第 i 堆中有 piles[i] 根香蕉。警卫已经离开了，将在 H 小时后回来。
//
//珂珂可以决定她吃香蕉的速度 K （单位：根/小时）。每个小时，她将会选择一堆香蕉，从中吃掉 K 根。如果这堆香蕉少于 K 根，她将吃掉这堆的所有香蕉，然后这一小时内不会再吃更多的香蕉。
//
//珂珂喜欢慢慢吃，但仍然想在警卫回来前吃掉所有的香蕉。
//
//返回她可以在 H 小时内吃掉所有香蕉的最小速度 K（K 为整数）。
public class MinEatingSpeed {

    public static int minEatingSpeed(int[] piles, int h) {

        int max = 1000000000;
        //速度不为 0 ，没意义。
        int left = 1;
        //闭区间
        int right = max + 1;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (getHour(piles, mid) <= h) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;


    }

    public static int getHour(int[] piles, int x) {
        int hour = 0;
        for (int num : piles) {
            hour += (num / x + (num % x > 0 ? 1 : 0));
        }
        return hour;

    }


    public static void main(String[] args) {
        int[] piles = new int[]{3, 6, 7, 11};

        int h = 8;
        System.out.println(minEatingSpeed(piles, h));
    }


}
